package persistencia.cliente;

import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import negocio.cv.Institucion;
import persistencia.DACBase;

public class DACInstitucion extends DACBase {
	
	private Institucion institucion;
	private List<Institucion> instituciones;
	private CallableStatement clstm;
	private ResultSet rs;
	
	
	
	public DACInstitucion(DACBase dacBase) {
		super(dacBase);
		// TODO Auto-generated constructor stub
	}

	public List<Institucion> consultarInstituciones(int idTipoDeEstudio) {
		try {
			instituciones = new ArrayList<Institucion>(); 
			clstm = getConn().prepareCall("{call institucionConsultarPorTipoEstudio(?)}");
			clstm.setInt("idTipoEstudio", idTipoDeEstudio); 
			clstm.execute();
			rs = clstm.getResultSet();			
			while (rs.next()) {
				
				institucion = new Institucion();
				institucion.setIdInstitucion(rs.getInt("idinstitucion"));
				institucion.setNombre(rs.getString("nombre"));				
				
				instituciones.add(institucion);
			}
			rs.close();
			rs = null;
			
			clstm.close();
	        clstm = null;
		}
		
	    catch (SQLException ex) {
		    // handle any errors
		    System.out.println("SQLException: " + ex.getMessage());
		    System.out.println("SQLState: " + ex.getSQLState());
		    System.out.println("VendorError: " + ex.getErrorCode());
		    System.out.println("Error en metodo consultarInstitucionesPorTipoEstudio()_DacInstitucion");
		}
	
    return instituciones;	
	}
	
	public Institucion consultarIstitucion(int id) {
			try {
				 
				clstm = getConn().prepareCall("{call institucionConsultar(?)}");
				clstm.setInt("id", id); 
				clstm.execute();
				rs = clstm.getResultSet();			
				if(rs.next()) {
					
					institucion = new Institucion();
					institucion.setIdInstitucion(rs.getInt("idinstitucion"));
					institucion.setNombre(rs.getString("nombre"));					
				}
				
				rs.close();
				rs = null;
				
				clstm.close();
		        clstm = null;
			}
			
		    catch (SQLException ex) {
			    // handle any errors
			    System.out.println("SQLException: " + ex.getMessage());
			    System.out.println("SQLState: " + ex.getSQLState());
			    System.out.println("VendorError: " + ex.getErrorCode());
			    System.out.println("Error en metodo consultarInstitucion()_DacInstitucion");
			}
		
	    return institucion;	
		}

}
